c++
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N=2e5+5;
const ll mod=19930726;
std::string toManacherss(const std::string& s){
std::string res;res.reserve(2*s.size()+3);
res="@#";for(int i=0;i<(int)s.size();i++)res+=s[i],res+='#';
res+='$';
return res;
}
std::vector<int> Manacher(const std::string& s){
auto t=toManacherss(s);
std::vector<int>p(t.size());
for(int i=1,r=0,c=0;i<t.size()-1;i++){
p[i]=(r>i?std::min(p[2*c-i],r-i):1);
while(t[i-p[i]]==t[i+p[i]])++p[i];
if(i+p[i]>r)r=i+p[i],c=i;
}
return p;
}
ll qpow(ll a,ll b){
ll res=1;
for(;b;b>>=1,a=a*a%mod)if(b&1)res=res*a%mod;
return res;
}
void fc() {
ll n,k;
std::string s;
std::cin>>n>>k>>s;
ll ans=1;
auto p=Manacher(s);
int mx=0;
std::vector<ll>cnt(n+2);
for(int x:p){
if(x<=1)continue;
cnt[x-1]++;mx=std::max(mx,x-1);
}
for(int i=mx-2;i>0;i--){
cnt[i]+=cnt[i+2];
}
for(int i=(mx&1?mx:mx-1);i>0&&k;i-=2){
ll cn=std::min(k,cnt[i]);
k-=cn;
ans=ans*qpow(i,cn)%mod;
}
std::cout<<(k?-1:ans);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
// std::cin>>t;
while (t--) fc();
return 0;
}